package cn.eud.hunau.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Param;

import cn.eud.hunau.pojo.Movie;

import java.util.List;

@Mapper// 自动将接口生成实现类的 Bean 并交给 Spring 容器管理。
public interface MovieMapper {
    // 查询所有电影
    List<Movie> selectAll();

    // 根据电影id查询电影
    Movie selectById(Integer id);

    List<Movie> selectInIds(@Param("ids") List<Long> ids);

    // 收藏电影
    int insertUserLikeMovie(Long userId, Long movieId);

    // 取消收藏
    int deleteUserLikeMovie(Long userId, Long movieId);

    // 查询用户收藏的电影
    List<Movie> selectLikedMoviesByUserId(Long userId);

    // 判断用户是否收藏某电影
    Integer isMovieLikedByUser(Long userId, Long movieId);

    // 评分电影
    int insertUserRateMovie(Long userId, Long movieId, Integer score);

    // 查询用户对某电影的评分
    Integer selectUserScore(Long userId, Long movieId);

    // 查询某电影的所有评分
    java.util.List<cn.eud.hunau.pojo.UserRateMovie> selectMovieScores(Long movieId);

    // 评论电影
    int insertUserCommentMovie(Long userId, Long movieId, String comment);

    // 查询某电影的所有评论
    java.util.List<cn.eud.hunau.pojo.UserCommentMovie> selectMovieComments(Long movieId);

    // 查询用户对某电影的评论
    java.util.List<cn.eud.hunau.pojo.UserCommentMovie> selectUserComments(Long userId, Long movieId);

    // 修改评论
    int updateUserCommentMovie(Long commentId, Long userId, String comment);

    // 删除评论
    int deleteUserCommentMovie(Long commentId, Long userId);

    // 查询热门电影排行（按评分和收藏数综合排序，示例）
    java.util.List<cn.eud.hunau.pojo.Movie> selectHotMovies(int limit);

    // 多条件综合分类查询电影
    java.util.List<cn.eud.hunau.pojo.Movie> selectMoviesByConditions(
        @org.apache.ibatis.annotations.Param("typeId") Long typeId,
        @org.apache.ibatis.annotations.Param("regionId") Long regionId,
        @org.apache.ibatis.annotations.Param("languageId") Long languageId
    );

    // 查询所有类型
    java.util.List<cn.eud.hunau.pojo.Type> selectAllTypes();
    // 查询所有地区
    java.util.List<cn.eud.hunau.pojo.Region> selectAllRegions();
    // 查询所有语言
    java.util.List<cn.eud.hunau.pojo.Language> selectAllLanguages();
}